package searchandsort;

/**
 * Created by fengliejv on 2017/11/1.
 */
public class ValidPerfectSquare367 {
    //循环形式的二分查找
    public boolean isPerfectSquare(int num) {
        int begin = 0;
        int end = num;
        while (begin <= end){
            int mid = (begin-end)/2 + end;
            if(num/mid== mid && num%mid==0){
                return true;
            }else if(num/mid>mid){
                begin = mid+1;
            }else {
                end = mid-1;
            }

        }
        return false;
    }


    //递归形式的二分查找
//        public boolean isPerfectSquare(int num) {
//        if(num==1){
//            return true;
//        }
//
//        return isPerfectSquare(0, num, num);
//
//    }
//
//    private boolean isPerfectSquare(int begin, int end, int obj) {
//        int mid = (begin + end) / 2;
//        int div = obj/mid;
//        if (div == mid && obj % mid == 0) {
//            return true;
//        }
//        if (mid == begin) {
//            return false;
//        }
//        if(div>mid){
//            return isPerfectSquare(mid,end,obj);
//        }else {
//            return isPerfectSquare(begin,mid,obj);
//        }
//    }
}
